package com.xyht.medicine_management_system.modules.kuaidi.myEnum;

public enum KuaidiStatusEnum {
    // 0：'下单成功'； 1：'已接单'； 2：'收件中'； 9：'用户主动取消'；10：'已取件'； 11：'揽货失败'；12：'已退回'； 13：'已签收'； 14：'异常签收'；15：'已结算' ；99：'订单已取消'；101：'运输中'；200：'已出单'；201：'出单失败'；610：'下单失败'；155：'修改重量'；166：订单复活（订单被取消，但是实际包裹已经发出，正常计费）；400：派送中
    ORDER_SUCCESS(0, "下单成功"),
    ORDER_RECEIVED(1, "已接单"),
    PICKING_UP(2, "收件中"),
    USER_CANCELLED(9, "用户主动取消"),
    COLLECTED(10, "已取件"),
    COLLECTION_FAILED(11, "揽货失败"),
    RETURNED(12, "已退回"),
    SIGNED(13, "已签收"),
    ABNORMAL_SIGNED(14, "异常签收"),
    SETTLED(15, "已结算"),
    ORDER_CANCELLED(99, "订单已取消"),
    IN_TRANSIT(101, "运输中"),
    BILL_GENERATED(200, "已出单"),
    BILL_GENERATION_FAILED(201, "出单失败"),
    ORDER_FAILED(610, "下单失败"),
    WEIGHT_MODIFIED(155, "修改重量"),
    ORDER_REACTIVATED(166, "订单复活（订单被取消，但是实际包裹已经发出，正常计费）"),
    DELIVERING(400, "派送中");

    private final int code;
    private final String description;

    KuaidiStatusEnum(int code, String description) {
        this.code = code;
        this.description = description;
    }

    public int getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    // 可以根据code获取对应的枚举值，方便在业务逻辑中使用
    public static KuaidiStatusEnum fromCode(int code) {
        for (KuaidiStatusEnum status : values()) {
            if (status.getCode() == code) {
                return status;
            }
        }
        throw new IllegalArgumentException("Invalid order status code: " + code);
    }
}
